// 引入 axios
import axios from 'axios';
// 请求配置单独写一个文件 baseurl.js
  // 创建 axios 实例
  const baseURL = '' || import.meta.env.VITE_APP_BASE_API
const http = axios.create({
  baseURL, //基础请求地址
  timeout: 10000, //请求超时设置
  withCredentials: false, // 跨域请求是否需要携带 cookie 
})
console.log(baseURL)
const server = {
  useTokenAuthorization: true, //是否开启 token 验证
}

http.interceptors.request.use(
  (config: any) => {
    console.log("请求配置", config);
    // 是否使用 Token
    if (server.useTokenAuthorization) {
      config.headers["Authorization"] = localStorage.getItem("token");
    }
    // 设置请求头
    if (config.method === "post") {
      config.headers["content-type"] = "application/x-ww-form-urlencoded";
      config.requestType = "form"
    } else {
      config.headers["content-type"] = "application/json"
    }
    // 返回
    return config
  },
  (error) => {
    Promise.reject(error)
  }
)

http.interceptors.response.use(
  (res) => {
    console.log("响应拦截", res);
    let data = res.data;
    // 处理自己的业务逻辑,如 token 是否过期...
    return new Promise((resolve, reject) => {
      resolve(data)
    });
  },
  (error) => {
    let message = ""
    if (error && error.response) {
      switch (error.response.status) {
        case 302:
          message = "接口重定向了! ";
          break;
        case 400:
          message = "参数不正确! ";
          break;
        case 401:
          message = "您未登录, 或者登录已经超时, 请先登录! "
          break;
        case 403:
          message = "您还没有权限操作! ";
          break;
        case 404:
          message = `请求地址出错: ${error.response.config.url}`;
          break;
        case 408:
          message = "请求超时! ";
          break;
        case 409:
          message = "系统已存在相同数据! "
          break;
        case 500:
          message = "服务器内部错误! "
          break;
        case 501:
          message = "服务未实现! "
          break;
        case 502:
          message = "回答错误! "
          break;
        case 503:
          message = "服务不可用"
          break;
        case 504:
          message = "服务暂时无法访问, 请稍后再试"
          break;
        case 505:
          message = "HTTP 版本不受支持! "
          break;
        default:
          message = "异常问题, 请联系管理员! "
          break;
      }
    }
    return Promise.reject(message);
  }
);
// 最后
export default http

